5.3时间戳格式化
1、通过格式化获取时间日期数据
当需要对时间戳做格式化设置时,可以使用srtftime()函数,该函数既可以对单个时间戳做格式化设置, 也可以对DatetimeIndex和Series中的时间戳做格式设置。
| 代码 | 注释 |
|---|---|
| %y | 表示两位数的年份(00-99) |
| %Y | 表示两位数的年份(0000-9999) |
| %m | 月份(01-12) |
| %d | 月内中的天(01-31) |
| %x | 获取日期的部份 |
| %X | 获取时间的部份 |
| %a | 简化日期名称 |
| %A | 完整日期名称 |
| %b | 简化月份名称 |
| %B | 完整月份名称 |
| %U | 一年中星期天数(00-53)星期天为星期的开始 |
| %W | 一年中星期天数(00-53)星期一为星期的开始 |
| %w | 星期(0-6),星期天为星期的开始 |
| %j | 年内的某一天(0-365) |
| %H | 24小时制小时数(0-23) |
| %I | 12小时制小时数(01-12) |
| %M | 分钟数(0-59) |
| %S | 秒(0-59) |
| %P | 本地.A.M.或PM的等价符 |
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.格式时间戳.xlsx" )
print (df)
t1=df.考核日期.dt.strftime( "%Y" ) #dt为时间器
t2=df.考核日期.dt.strftime( "%d" )
print (t1)
print (t2)
返回:
| 姓名 | 考核日期 | 分数 | ||
|---|---|---|---|---|
| 0 | 张三 | 2023-03-09 | 09:12:54 | 89 |
| 1 | 李四 | 2021-05-18 | 19:45:34 | 96 |
| 2 | 王麻子 | 2011-11-11 | 11:16:04 | 83 |
| 3 | 小曾 | 2024-01-12 | 23:32:55 | 99 |
| 0 | 2023 |
| 1 | 2021 |
| 2 | 2011 |
| 3 | 2024 |
Name: 考核日期, dtype: object
| 0 | 09 |
| 1 | 18 |
| 2 | 11 |
| 3 | 12 |
Name: 考核日期, dtype: object
2、通过属性获取时间日期数据
要提取单个时间戳、时间戳序列,时间戳访问器3种数据的相关信息和属性, 可能使用strftime()函数,通过格式化代码设置获得,也可以通过使用属性获取时间戳的相关信息。
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.格式时间戳.xlsx" )
print (pd.to_datetime( "2015-6-3 11:12:16" ).strftime( "%Y" )) #此种获得的数据是文件格式
print (pd.to_datetime( "2015-6-3 11:12:16" ).year) #此种获得的数据是标准的时间格式
df[ "日期1" ]=df.考核日期.map(lambda d:d.date())
df[ "日期2" ]=df.考核日期.dt.date
df[ "日期3" ]=pd.DatetimeIndex(df.考核日期).date # 通过先获得时间序列再获取日期,推荐使用此种方法
print (df)
2015
2015
| 姓名 | 考核日期 | 分数 | 日期1 | 日期2 | 日期3 | ||
|---|---|---|---|---|---|---|---|
| 0 | 张三 | 2023-03-09 | 09:12:54 | 89 | 2023-03-09 | 2023-03-09 | 2023-03-09 |
| 1 | 李四 | 2021-05-18 | 19:45:34 | 96 | 2021-05-18 | 2021-05-18 | 2021-05-18 |
| 2 | 王麻子 | 2011-11-11 | 11:16:04 | 83 | 2011-11-11 | 2011-11-11 | 2011-11-11 |
| 3 | 小曾 | 2024-01-12 | 23:32:55 | 99 | 2024-01-12 | 2024-01-12 | 2024-01-12 |
| dt | 访问属性 | 注释 |
|---|---|---|
| date | 获取日期部分 | |
| time | 获取时间部分 | |
| year | 获取年分 | |
| quarter | 获取季度 | |
| month | 获取月份 | |
| day | 获取日 | |
| hour | 获取小时 | |
| mininute | 获取分钟 | |
| isocalendar().week | 每年的第几周(只适用于时间戳访问器) | |
| dayofweek | 星期1为0,星期日为6 | |
| dayofyear | 一年中的第几天 | |
| daysinmonth | 获取日期当月最后一天 | |
| day_in_month | 获取日期当月最后一天 |